package q901_StockSpanner;

import java.util.Stack;

public class StockSpanner {
    // 用单调栈维护一个单调递减的价格序列 —— prices
    // weight用户存储它离上一个价格之间（即最近的一个大于它的价格之间）的天数。
    // 如果是栈底的价格，则存储它本身对应的天数。
    Stack<Integer> prices, weights;

    public StockSpanner() {
        prices = new Stack();
        weights = new Stack();
    }

    public int next(int price) {
        int w = 1;
        while (!prices.isEmpty() && prices.peek() <= price) {
            prices.pop();
            w += weights.pop();
        }

        prices.push(price);
        weights.push(w);
        return w;
    }

}
